Hi Luc -
You can use something like the code shown below - basically, it
restricts the user from panning too far by listening to the MOVE_STEP
event and panning back if they go too far.
- pamela
// Define bounds somewhere application
private var mapBounds:LatLngBounds;
// Add listener after map is created
map.addEventListener(MapMoveEvent.MOVE_STEP, onMoveStepEvent);
/**
* Restrict padding on movement such that the center
* of the map stays within bounds.
*
* @param event move event information.
* @author Scott Selikoff
*/
private function onMoveStepEventHandler(event:Event):void {
if(!mapBounds.containsLatLng(map.getCenter())) {
// Initialize new point
var newLatitude:Number = map.getCenter().lat();
var newLongitude:Number = map.getCenter().lng();
// Initial min/max
var minLatitude:Number = mapBounds.getSouthEast().lat();
var maxLatitude:Number = mapBounds.getNorthEast().lat();
var minLongitude:Number = mapBounds.getNorthWest().lng();
var maxLongitude:Number = mapBounds.getNorthEast().lng();
// Adjust Latitude as needed
if(newLatitude < minLatitude) {
newLatitude = minLatitude;
} else if(newLatitude > maxLatitude) {
newLatitude = maxLatitude;
}
// Adjust Longitude as needed
if(minLongitude < maxLongitude) {
// Normal Case
if(newLongitude < minLongitude) {
newLongitude = minLongitude;
} else if(newLongitude > maxLongitude) {
newLongitude = maxLongitude;
}
} else {
// Case where bounds is on
International date line since West > East
if(newLongitude < minLongitude &&
newLongitude > maxLongitude) {
// Bound detected, choose
nearest neighbor
if(Math.abs(newLongitude-minLongitude) <
Math.abs(newLongitude-maxLongitude)) {
newLongitude = minLongitude;
} else {
newLongitude = maxLongitude;
}
}
}
map.setCenter(new LatLng(newLatitude,newLongitude));
}
}
On Sat, May 30, 2009 at 12:57 PM, Luc Barthelet <[email protected]> wrote:
>
> Asking again. Did I miss some answer somehow?
> I am trying to constrain the dragging of the map to a rectangle, but I have
> not figured out anyway to do that.
>
> Thank you,
> Luc
>
>
> -----Original Message-----
> From: [email protected]
> [mailto:[email protected]] On Behalf Of Luc Barthelet
> Sent: Sunday, May 24, 2009 5:06 PM
> To: [email protected]
> Subject: Limiting the drag boundaries of the map
>
>
> I have a custom map, and it would be nice to be able to control to which
> extend the user can drag the map around.
> I would like to prevent the 'around the world' wrapping of the map, as my map
> is currently only a small portion of a future larger map.
>
> Is there a way to do that already? or would that be a new feature?
>
> Thank you,
> Luc
>
>
>
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Maps API For Flash" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-maps-api-for-flash?hl=en
-~----------~----~----~----~------~----~------~--~---