6

我试过使用谷歌地图标记管理器,但我似乎每次点击砖墙,我遵循教程如何在谷歌文档上创建markermanager,但它似乎没有任何工作适合我,这是我的代码如何编写的问题?在这里用完了想法,目前我已经设置了一个标记,以便根据latlng在地图上下拉。谷歌地图标记管理器V3

有人可以尝试像执行教程代码,找到一个工作解决方案吗?它让我疯狂。

@{ 
    ViewBag.Title = "Index"; 
} 

<h2>Index</h2> 

<div id="map_canvas" style="width:500px; height:500px;"></div> 

    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 

    @*<script src="../../Scripts/markermanager.js" type="text/javascript"></script>*@ 

    <script type="text/javascript"> 

     function initialize() { 
      var latlng = new google.maps.LatLng(-34.397, 150.644); 
      var myOptions = { 
       zoom: 8, 
       center: latlng, 
       mapTypeId: google.maps.MapTypeId.ROADMAP // map view, can be set to satellite, street, roadview, aerialview 
      }; 
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 

      var marker = new google.maps.Marker({ 
       position: latlng, 
       map: map, 
       animation: google.maps.Animation.DROP, 
       title: "Uluru (Ayers Rock)" 
      }); 

      marker.setMap(map); 
     } 

     $(document).ready(function() { 
      initialize(); 
     }); 

    </script> 
+1

你已经包括了文件,但你不使用标记管理类上面的代码。这是为什么? –

+0

带来错误:GBounds未定义 [Break On This Error] GBounds.prototype.containsPoint = function(point){在markermanager.js文件中 – MJCoder

+0

您正在使用什么标记管理器?您是否使用GMAP API v3为GMAP API v2制作的标记管理器? –

回答

15

下面是一个例子,让你开始:

var map; 
 
var mgr; 
 

 
function initialize() { 
 
    var myOptions = { 
 
    zoom: 8, 
 
    center: new google.maps.LatLng(-34.397, 150.644), 
 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    }; 
 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
 
    mgr = new MarkerManager(map); 
 
    google.maps.event.addListener(mgr, "loaded", function() { 
 
    for (var i = 0; i < 1000; i++) { 
 
     var marker = new google.maps.Marker({ 
 
     position: new google.maps.LatLng(Math.random() * 180 - 90, Math.random() * 360 - 180), 
 
     title: "Random marker #" + i 
 
     }); 
 
     mgr.addMarker(marker, 0); 
 
    } 
 
    mgr.refresh(); 
 
    }); 
 
} 
 
google.maps.event.addDomListener(window, "load", initialize);
<script src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
 
<script src="http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markermanager/src/markermanager.js"></script> 
 

 
<div id="map_canvas" style="height: 400px;"></div> 
 
<p>Pan or zoom out to see markers</p>

注意到在创建标记时,我没有指定map: mapmarker.setMap(map)。相反,将标记添加到标记管理器,然后在您拨打markermanager.refresh()时将标记添加到地图中。

另请注意,我在缩放级别0上添加了所有标记。理想情况下,您应该在较低缩放级别加载少量标记,在较高缩放级别加载更多标记。

+0

优秀的例子..正是我需要的,所以我看到我们已经使用了一个for循环,它将创建多达1000个标记,并使用math.random()随机放置它们,我如何得到它,所以当地图加载所有标记显示时没有放大或缩小以查看它们全部? 它会是这样的:map.fitBounds(latlngbounds); – MJCoder

+0

上面的例子我如何将所有标记放在地图上而不放大/缩小? map.fitBounds();是这样吗? – MJCoder

+0

现在为我工作,现在我会看MVC3中的JSON结果:) 谢谢萨尔曼:) – MJCoder