Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用Google Maps API的标记上未显示信息窗口_Javascript_Jquery_Google Maps_Google Maps Api 3 - Fatal编程技术网

Javascript 使用Google Maps API的标记上未显示信息窗口

Javascript 使用Google Maps API的标记上未显示信息窗口,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我正在使用jQuery的“each”循环创建标记和信息窗口,以迭代DOM元素。我定义了一个全局infomarker变量,根据mapsapi,这是一种使它一次只显示一个infomarker的方法。目前,单击标记不起任何作用。奇怪的是,在地图的中心有一个点,我可以点击它来显示一个信息标记(内容将其附加到其中一个标记上)。你知道我能做些什么来解决这个问题吗 $(function () { function initialize() { // Get city coordinates ..

我正在使用jQuery的“each”循环创建标记和信息窗口,以迭代DOM元素。我定义了一个全局infomarker变量,根据mapsapi,这是一种使它一次只显示一个infomarker的方法。目前,单击标记不起任何作用。奇怪的是,在地图的中心有一个点,我可以点击它来显示一个信息标记(内容将其附加到其中一个标记上)。你知道我能做些什么来解决这个问题吗

$(function () {
  function initialize() {

    // Get city coordinates .. set map options so map centers on city .. place map on map-canvas  
    var page_city_lat = $("#page_city_lat").text();
    var page_city_lng = $("#page_city_lng").text();
    var mapOptions = {
      center: new google.maps.LatLng(page_city_lat, page_city_lng),
      zoom: 10
    };
    var map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);

    // define concert object, mapCoords
    function Concert(x)
    {
      this.lat = $(x).find(".lat").text();
      this.lng = $(x).find(".lng").text();    
      this.headline = $(x).find(".event_title").text();
      this.venue = $(x).find(".venue").text();
      this.latlng = new google.maps.LatLng(this.lat, this.lng)
    };


    // Global infowindow variable declaration makes only 1 infowindow open at a time. 
    var infowindow = new google.maps.InfoWindow({}); 
    // Necessary to pre-declare variable?
    var map_ids = $(".map_id");
    $.each(map_ids, function (index, value) 
    {
      var listing = new Concert(value);
      var concertString = 'headline: ' + listing.headline + '<br>' + 'Venue' + listing.venue
      var concertMarker = new google.maps.Marker(
      {
        position: listing.latlng,
        map: map,
        title: listing.venue
      });
      infowindow.setContent(concertString);
      google.maps.event.addListener(concertMarker, 'click', function () {
          infowindow.open(map, concertMarker);    
      });
    });
  };
    google.maps.event.addDomListener(window, 'load', initialize);
});
$(函数(){
函数初始化(){
//获取城市坐标..设置地图选项,使地图以城市为中心..将地图放置在地图画布上
var page_city_lat=$(“#page_city_lat”).text();
var page_city_lng=$(“#page_city_lng”).text();
变量映射选项={
中心:新的google.maps.LatLng(page_city_lat,page_city_lng),
缩放:10
};
var map=new google.maps.map(document.getElementById(“地图画布”),mapOptions);
//定义协调对象,mapCoords
功能音乐会(x)
{
this.lat=$(x).find(“.lat”).text();
this.lng=$(x).find(“.lng”).text();
this.headline=$(x).find(“.event_title”).text();
this.venture=$(x).find(“.venture”).text();
this.latlng=新的google.maps.latlng(this.lat,this.lng)
};
//全局infowindow变量声明一次只打开一个infowindow。
var infowindow=new google.maps.infowindow({});
//需要预先声明变量吗?
var map_id=$(“.map_id”);
$.each(映射ID、函数(索引、值)
{
var清单=新音乐会(价值);
var concertString='headline:'+listing.headline+'
'+'Venue'+listing.Venue var concertMarker=new google.maps.Marker( { 职位:listing.latlng, 地图:地图, 标题:列名地点 }); infowindow.setContent(concertString); google.maps.event.addListener(concertMarker,'click',函数(){ 信息窗口。打开(地图、标记); }); }); }; google.maps.event.addDomListener(窗口“加载”,初始化); });
请您在jsfiddle.net上实现您的代码,以便我们可以验证这个问题

检查以下工作代码。希望你能有所了解

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>
        Google Maps Example
</title>
<script src='http://code.jquery.com/jquery.min.js' type='text/javascript'>
</script>
</head>
<body>
    <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false">
    </script>
    <script type="text/javascript">
        var infowindow = null;
        $(document).ready(function () {
            initialize();
        }
                                         );

        function initialize() {

            var centerMap = new google.maps.LatLng(39.828175, -98.5795);

        var myOptions = {
            zoom: 4,
            center: centerMap,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

                var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

        setMarkers(map, sites);
        infowindow = new google.maps.InfoWindow({
            content: "loading..."
        }
                                                                                     );

        var bikeLayer = new google.maps.BicyclingLayer();
        bikeLayer.setMap(map);
    }

var sites = [
['Delhi', 29.45155, 79.00268, 4, 'This is Delhi.'],
        ['Badlands National Park', 43.785890, -101.90175, 1, 'This is Badlands National Park']
    ];



function setMarkers(map, markers) {

    for (var i = 0; i < markers.length; i++) {
        var sites = markers[i];
        var siteLatLng = new google.maps.LatLng(sites[1], sites[2]);
        var marker = new google.maps.Marker({
            position: siteLatLng,
            map: map,
            title: sites[0],
            zIndex: sites[3],
            html: sites[4]
        }
                                                                             );

        var contentString = "Some content";

        google.maps.event.addListener(marker, "click", function () {
            //alert(this.html);
            infowindow.setContent(this.html);
            infowindow.open(map, this);
        }
                                                                 );
    }
}
</script>

<div id="map_canvas" style="width: 600px; height: 600px;">
</div>
</body>
</html>

谷歌地图示例
var infowindow=null;
$(文档).ready(函数(){
初始化();
}
);
函数初始化(){
var centerMap=new google.maps.LatLng(39.828175,-98.5795);
变量myOptions={
缩放:4,
中心:中心地图,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
var map=new google.maps.map(document.getElementById(“map_canvas”),myOptions);
设置标记(地图、地点);
infowindow=新建google.maps.infowindow({
内容:“正在加载…”
}
);
var bikeLayer=new google.maps.BicyclingLayer();
bikeLayer.setMap(map);
}
变量站点=[
[“德里”,29.45155,79.00268,4,“这是德里。”,
[“荒地国家公园”,43.785890,-101.90175,1,“这是荒地国家公园”]
];
函数集合标记(映射、标记){
对于(var i=0;i
您的代码没有按预期工作,但他在某种程度上为我工作(当我单击标记时,信息窗口会打开),因此您应该发布更多详细信息或演示,以确定主要问题(之后,我们可能会讨论其他问题,例如现场).@Dr.Molle不幸的是,我在获取heroku的地图时遇到了问题,但希望很快就能做到。在此之前,如果您可以运行rails应用程序,您可以通过在github.com/maxpleaner/data的主分支上克隆最近的提交来复制问题_streams@Dr.Molle抱歉,如果你加载应用程序,我忘记提供进入页面的url。。。它是localhost:3000/map/index?city=oakland,或者您可以在不同的citylocalhost中输入?今天是4月3日,不是4月1日:D@Dr.Molle记得我说过我在Heroku上遇到问题吗?另外,我提到如果你能运行rails应用程序,你应该使用localhost?不管怎样,我现在已经在线上了(有关托管代码,请参阅github.com/maxpleaner/datastreams master branch)