以地图ID作为关键。
VAR MAPINFO </跨度> = {mapkey:’‘,map:’’};
我将map对象放在mapInfo.map中,mapkey将是一个字符串ID。
但是我无法在相应的地图上放置标记。如果我, streetViewControl:false};
var map = new google.maps.Map(document.getElementById(map_container_div),myOptions);
if(!getMap(map_container_div)){ VAR MAPINFO </跨度> = {mapkey:’‘,map:’’}; mapInfo.map -
您的代码可以正常工作,并且您应该能够以您计划的方式对地图对象进行哈希处理。无法正常工作的是您处理地址地理编码的方式。由于每次启动地理编码请求时只有一个地理编码器对象实例,因此地图引用将仅包含页面上的最后一个地图。 因此,您有两个选择 - 在您进行另一个地理编码请求之前,构建一个计时器来检查地理编码器(您的placeMarker函数)是否已完成。或者你保留一组地理编码器对象(比如你的地图)..
这是一个例子
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script> <script> var mapHash = []; var bound = new google.maps.LatLngBounds(); finishedCoding = false; function initMap(map_container_div) { var latlng = new google.maps.LatLng(38.5111, -96.8005); var myOptions = { zoom:4, center:latlng, mapTypeId:google.maps.MapTypeId.ROADMAP, streetViewControl: false }; var map = new google.maps.Map(document.getElementById(map_container_div), myOptions); if (!getMap(map_container_div)) { var mapInfo = { mapkey:'', map:'', geocoder : new google.maps.Geocoder() }; mapInfo.map = map; mapInfo.geocoder = new google.maps.Geocoder(); mapInfo.mapKey = map_container_div; mapHash.push(mapInfo); } } function palceMarker(myAddress, mapId) { mapIndex = getMap(mapId) //alert(myAddress + mapId + map) mapHash[mapIndex].geocoder.geocode({ 'address':myAddress }, function (results, status) { if (status == google.maps.GeocoderStatus.OK) { mapIndex = getMap(mapId) var marker = new google.maps.Marker({ map:mapHash[mapIndex].map, position:results[0].geometry.location, title: results[0].formatted_address }); bound.extend(results[0].geometry.location); mapHash[mapIndex].map.fitBounds(bound); finishedCoding = true; } }); } function getMap(mapKey) { for (var i = 0 ; i < mapHash.length ; i++) { if (mapHash[i].mapKey == mapKey) { return i; } } return false; } function init() { initMap("map1") initMap("map2") palceMarker("1/86-100 Market St, Sydney New South Wales 2000", "map1") palceMarker("120 Market St, Sydney New South Wales 2000", "map2") } </script> <body onload="init()"> <div id="map1" style="width: 400px; height: 200px;"> </div> <br> <br> <div id="map2" style="width: 400px; height: 200px;"> </div> </body>