Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I need to show a marker for each user that falls within the visible portion of google map. To do so, I get the bounding box from google map, and send it down to the database and I receive a list of users that fall within the box. Then loop through the list of users and place a marker on the map for each user.

All works well, however, if the lat/lng falls just bellow the top border, then only the bottom of the marker is visible. If the lat/lng falls next to the side borders, then only 1/2 of the marker is visible.

One way to tackle this problem is to send a reduced version of the bounding box to the database. This way, you'd have a bounding box with margins, but you don't show anything within the margins.

Now, what is the best way of shrinking down the bounding box before sending it down to the database?

Is there any better way of doing this?

Check the image, 1/2 of the marker is hidden. (top) enter image description here

share|improve this question
I don't understand your question or its context, can you elaborate - perhaps with a diagram of what you're attempting to achieve? – nagytech Mar 3 '13 at 6:16
Take 2. Hope this better explains the problem I am trying to solve. All I need is to calculate a new bounding box that is smaller than what I get from google and fits within it. – Val Neekman Mar 4 '13 at 15:02
Found one may related with this… – Lester 2 days ago
up vote 0 down vote accepted

I have found an answer at Stack Overflow that may related to this question and I think the method it is using is same as @Tamas said.

share|improve this answer

We're looking for long answers that provide some explanation and context. Don't just give a one-line answer; explain why your answer is right, ideally with citations. Answers that don't include explanations may be removed.

First I suggest you to take a look at the docs of the geometry library

Then here are the steps that are recommended:

  1. Measure the horizontal and vertical dimensions of the bounds.
  2. Multiply both of them by 0.1 thus you will get the 10% value of each.
  3. Calculate the distance you will use to offset the new bounds' corner coordinates by calculating the hypotenuse of the triangle where the two legs are the two 10% values. So it will look like leg1 to the pwr of 2 + leg2 to the pwr of 2 = hypotenuse to the pw of 2 Simple pithagoras theorem.
  4. Now that you have the hypotenuse value, you can use that as an offset distance from the two corners of the bounds: the southwestern and northeastern. Use > computeOffset(from:LatLng, distance:number, heading:number, radius?:number) from the google library i referenced above. When calculating the offset by the southwestern corner, use a heading value of 45° and by the northeastern, use 225°
  5. The above steps will result in having two new latlngs that you can use to form your new, reduced bounds object. You can test the functionality by drawing rectangle objects, using these bounds.

I think it will be exactly what you need.

share|improve this answer
This isn't very efficient, there's simply no need to bring Math.pow into the equation. – nagytech Mar 11 '13 at 10:28
Personally, I don't think that two dead simple pithagoras theorem could seriously make this approach inefficient. Do you have any other approach to share? – Tamas Mar 11 '13 at 11:24
It's not efficient because there's no need to go on a tangent, literally. It may not be relevant to this exact problem, but if you follow the path of least resistance in computing science and you won't go very far - demand in applications can scale quite quickly without warning. I already have provided my solution. Feel free to down vote it for arbitrary reasons of your own. Also, – nagytech Mar 11 '13 at 22:59

I would try the fitBounds method in the API first:

The way you suggest would work, but the math to do it is not going to be that easy.

share|improve this answer

If the root of this question is to avoid the margin used by Google Map API's fitBounds() function then I suggest to look at Google Maps V3 - How to calculate the zoom level for a given bounds question on StackOverflow. It gives you a function to directly calculate the zoom level you need to use to fit the given bounds into the visible area of the map. This is a better trick, than reducing the bounding box to counteract the effect of the mandatory margin used fitBounds().

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.