javascript - Google maps bounds not working -
i trying set bounds of custom google map user cannot zoom out far (to point world map starts tile horizontally), , cannot drag far vertically avoid this issue.
i've added code set bounds, no longer seem able drag @ (uncomment bounds code recreate). want bounds world map avoid issue in screenshot above. obvious i've missed?
<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>document</title> <style> #map_canvas { width: 100%; height: 650px; } // #map </style> </head> <body> <div id="map_canvas"></div> <script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?sensor=false"></script> <script type="text/javascript"> function coordmaptype(tilesize) { this.tilesize = tilesize; } coordmaptype.prototype.gettile = function(coord, zoom, ownerdocument) { var div = ownerdocument.createelement('div'); div.style.width = this.tilesize.width + 'px'; div.style.height = this.tilesize.height + 'px'; div.style.backgroundimage = 'url(http://www.transparenttextures.com/patterns/dark-denim-3.png)'; return div; }; var map; var mullem = new google.maps.latlng(50.3873733,7.4952241); function initialize() { var latlng = new google.maps.latlng(50.3873733,7.4952241); var myoptions = { disabledefaultui: true, zoom: 2 }; var map = new google.maps.map(document.getelementbyid("map_canvas"), myoptions); var mylatlng = new google.maps.latlng(50.3869012, 7.4950149); var marker = new google.maps.marker({ position: new google.maps.latlng(40.6700, -73.9400), map: map, icon: 'images/map-marker.png', zindex: 999999 }); map.setcenter(new google.maps.latlng(51.508742,-0.120850)); // map bounds /*var allowedbounds = new google.maps.latlngbounds( new google.maps.latlng(83.829945, 160.839844), new google.maps.latlng(-72.711903, -165.058594) ); var lastvalidcenter = map.getcenter(); google.maps.event.addlistener(map, 'center_changed', function() { if (allowedbounds.contains(map.getcenter())) { // still within valid bounds, save last valid position lastvalidcenter = map.getcenter(); return; } // not valid anymore => return last valid position map.panto(lastvalidcenter); });*/ // map bounds - end map.overlaymaptypes.insertat(0, new coordmaptype(new google.maps.size(256, 256))); } google.maps.event.adddomlistener(window, 'load', initialize); </script> </body> </html>
from the documentation:
latlngbounds(sw?:latlng|latlngliteral, ne?:latlng|latlngliteral) constructs rectangle points @ south-west , north-east corners.
your bounds backwards:
var allowedbounds = new google.maps.latlngbounds( new google.maps.latlng(83.829945, 160.839844), // ne new google.maps.latlng(-72.711903, -165.058594) // sw );
should be:
var allowedbounds = new google.maps.latlngbounds( new google.maps.latlng(-72.711903, -165.058594), // sw new google.maps.latlng(83.829945, 160.839844) // ne );
code snippet:
function coordmaptype(tilesize) { this.tilesize = tilesize; } coordmaptype.prototype.gettile = function(coord, zoom, ownerdocument) { var div = ownerdocument.createelement('div'); div.style.width = this.tilesize.width + 'px'; div.style.height = this.tilesize.height + 'px'; div.style.backgroundimage = 'url(http://www.transparenttextures.com/patterns/dark-denim-3.png)'; return div; }; var map; var mullem = new google.maps.latlng(50.3873733, 7.4952241); function initialize() { var latlng = new google.maps.latlng(50.3873733, 7.4952241); var myoptions = { disabledefaultui: true, zoom: 2 }; var map = new google.maps.map(document.getelementbyid("map_canvas"), myoptions); var mylatlng = new google.maps.latlng(50.3869012, 7.4950149); var marker = new google.maps.marker({ position: new google.maps.latlng(40.6700, -73.9400), map: map, icon: 'http://maps.google.com/mapfiles/ms/micons/blue.png', zindex: 999999 }); map.setcenter(new google.maps.latlng(51.508742, -0.120850)); // map bounds // latlngbounds(sw?:latlng|latlngliteral, ne?:latlng|latlngliteral) constructs rectangle points @ south-west , north-east corners. var allowedbounds = new google.maps.latlngbounds( new google.maps.latlng(-72.711903, -165.058594), // sw new google.maps.latlng(73.829945, 160.839844) // ne ); var lastvalidcenter = map.getcenter(); google.maps.event.addlistener(map, 'center_changed', function() { if (allowedbounds.contains(map.getcenter())) { // still within valid bounds, save last valid position lastvalidcenter = map.getcenter(); return; } // not valid anymore => return last valid position map.panto(lastvalidcenter); }); // map bounds - end map.overlaymaptypes.insertat(0, new coordmaptype(new google.maps.size(256, 256))); } google.maps.event.adddomlistener(window, 'load', initialize);
html, body, #map_canvas { width: 100%; height: 100%; } // #map
<script src="https://maps.googleapis.com/maps/api/js"></script> <div id="map_canvas"></div>
Comments
Post a Comment