【问题标题】:Google Map not showing all markers from retrieved addresses谷歌地图未显示检索到的地址中的所有标记
【发布时间】:2013-07-18 11:07:01
【问题描述】:

美好的一天,

我正在尝试在我的谷歌地图上添加标记,但并非所有标记都显示。仅显示第一个地址标记。请看下面的代码:

//Search Button Event Handler
function getAccounts() {

    //Search where City contains data
    var Search = SearchText.value;
    //alert("You have inserted: " + Search + " as a city");
    if (Search != "") {
        retrieveMultiple("AccountSet", "substringof('" + Search + "',Address1_City)", SearchCompleted, null);
    }

    //Retrieve all Accounts
    else {
        retrieveMultiple("AccountSet", null, SearchCompleted, null);
    }
}

//Callback - Search Success
function SearchCompleted(data, textStatus, XmlHttpRequest) {

    if (data && data.length > 0) {  
        for (var i=0; i < data.length; i++) {                
            var result = data[i];
            var address = (data[i].Address1_Line1 + ", " + data[i].Address1_City + ", " + data[i].Address1_StateOrProvince + ", " + data[i].Address1_Country);

            showAddress(address);

            alert(result.Address1_Line1 + ", " +result.Address1_City + ", " + result.Address1_StateOrProvince + ", " + result.Address1_Country);
        }
    }
    else {
        alert('No records!');
    }
}


function showAddress(address) {
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'address': address}, function (result, status) {
        if (status == google.maps.GeocoderStatus.OK) {

            var myOptions = {
                zoom: 3,
                center: result[0].geometry.location,
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map"), myOptions);
            //map.setCenter(result[0].geometry.location);
            var marker = new google.maps.Marker({
                map: map,
                position: result[0].geometry.location
            });
        } else {
            Alert("Geocode was not successful for the following reason: "+ Status); // address not found
        }
    });

}

// ]]>

我知道信息已正确检索,因为 alert() 显示了所有检索到的信息

【问题讨论】:

    标签: google-maps google-maps-api-3 google-maps-markers


    【解决方案1】:

    您的 showAddress 函数为每个标记创建一个新地图。如果要显示多个,则需要创建一张地图并将所有标记添加到其中。改变这个:

    function showAddress(address) {
      var geocoder = new google.maps.Geocoder();
      geocoder.geocode({ 'address': address}, function (result, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          // creates a new map object
          var myOptions = {
            zoom: 3,
            center: result[0].geometry.location,
            mapTypeId: google.maps.MapTypeId.ROADMAP
          };
          var map = new google.maps.Map(document.getElementById("map"), myOptions);
          //map.setCenter(result[0].geometry.location);
          var marker = new google.maps.Marker({
            map: map,
            position: result[0].geometry.location
          });
        } else {
          Alert("Geocode was not successful for the following reason: "+ Status); // address not found
        }
      });
    }
    

    到这里:

    function showAddress(address, map) {
      var geocoder = new google.maps.Geocoder();
      geocoder.geocode({ 'address': address}, function (result, status) {
        if (status == google.maps.GeocoderStatus.OK) {
          var marker = new google.maps.Marker({
            map: map,
            position: result[0].geometry.location
          });
        } else {
          Alert("Geocode was not successful for the following reason: "+ Status); // address not found
        }
      });
    }
    

    并在调用之前创建地图(在您发布的代码之外的某个地方)。

    【讨论】:

    • 对不起,它似乎不起作用。请张贴一个你在说什么的例子。谢谢
    • “它似乎不起作用”是什么意思?如果您需要其他帮助(即工作修复),请发布显示问题的完整示例(jsfiddle 或源代码)。或者查看 javascipt 控制台并修复报告的任何错误。
    • 如果这回答了您的问题并且对您有用,请accept it
    猜你喜欢
    • 2013-07-22
    • 2014-05-17
    • 1970-01-01
    • 2020-04-02
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    相关资源
    最近更新 更多