Javascript 样式化地图和位置库Google Map API v3

Javascript 样式化地图和位置库Google Map API v3,javascript,google-maps-api-3,google-places-api,Javascript,Google Maps Api 3,Google Places Api,如何从Google Places库中获取结果,并显示在我的样式化Google地图上?有了这段代码,我就得到了样式化的地图,没有位置 <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?key=mykey&sensor=true"> </script> <script type="text/javascript" src="http://maps.google

如何从Google Places库中获取结果,并显示在我的样式化Google地图上?有了这段代码,我就得到了样式化的地图,没有位置

<script type="text/javascript"
  src="http://maps.googleapis.com/maps/api/js?key=mykey&sensor=true">
</script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&sensor=true"></script>  


<script type="text/javascript">


 function initialize() {
var styles = [ { featureType: "road.arterial", elementType: "geometry", stylers: [ {   color: "#808080" }, { weight: 0.5 } ] },{ featureType: "road.arterial", elementType: "labels.text.stroke", stylers: [ { visibility: "on" }, { color: "#fafafa" } ] },{ featureType: "water", elementType: "geometry", stylers: [ { color: "#b4d2fa" } ] },{ featureType: "water", elementType: "geometry.fill", stylers: [ { color: "#9c3239" } ] } ]

var styledMap = new google.maps.StyledMapType(styles,
{name: "WATS Map"});

var myLatLng = new google.maps.LatLng(42.3068, -83.681)

var mapOptions = {
zoom: 12,
center: myLatLng,
mapTypeControlOptions: {
  mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'map_style']
}
};
var map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);


map.mapTypes.set('map_style', styledMap);
map.setMapTypeId('map_style');


var request = {
      location: myLatLng,
      radius: 1500,
      types: ['store']
    };
    var infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);
    service.search(request, callback);
  }

  function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
    }
  }

  function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: styledMap,
      position: place.geometry.location
    });

    google.maps.event.addListener(marker, 'click', function() {
      infowindow.setContent(place.name);
      infowindow.open(styledMap, this);
    });
  }
</script>

函数初始化(){
var styles=[{featureType:“road.arteral”,elementType:“geometry”,stylers:[{color:”“808080”},{weight:0.5},{featureType:“road.arteral”,elementType:“labels.text.stroke”,stylers:[{visibility:“on”},{color:“\fafafafafafafafafafa”},{featureType:“water”,elementType:“geometry”,stylers:[{color:“\b4d2fa,{featureType:“水”,elementType:“geometry.fill”,样式器:[{color:#9c3239}]}]
var styledMap=new google.maps.StyledMapType(样式,
{名称:“WATS地图”});
var mylatng=new google.maps.LatLng(42.3068,-83.681)
变量映射选项={
缩放:12,
中心:myLatLng,
mapTypeControlOptions:{
MapTypeId:[google.maps.MapTypeId.ROADMAP,'map_style']
}
};
var map=new google.maps.map(document.getElementById('map_canvas'),
地图选项);
map.mapTypes.set('map\u style',styledMap);
setMapTypeId('map_style');
var请求={
地点:myLatLng,
半径:1500,
类型:['store']
};
var infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务搜索(请求、回调);
}
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i
您必须将变量
映射为全局变量,并将
映射指定给
createMarker()中标记的映射选项


当前您在那里使用的是
styledMap
,但这不是一个映射对象,它是一个StyledMapType

我发现两个编码错误的
styledMap
,并对它们进行了更正。映射变量是:
var map=new google.maps.map(document.getElementById('map\u canvas'),mapOptions)
我的理解是,在javascript中默认情况下,它是一个全局变量。不是这样吗?谢谢!我还尝试将map变量放置在函数外部。它仍然不起作用,尽管我从头开始并设法使它起作用……谢谢!当您使用var关键字定义变量时,该变量是可访问的在您定义的范围内。在本例中,范围是函数,因此变量不是全局变量。当您输入var关键字时,变量始终是全局变量,无论您在何处定义它。