2014-12-19 226 views
0

我有一个谷歌地图的问题,我不能把标记放在一些位置。我的想法是找到我的位置并在其上放置标记,然后将标记放置在其他位置上,但其他位置上的标记未显示在地图上。谷歌地图api V3标记

function success(position) { 
     var mapcanvas = document.createElement('div'); 
     mapcanvas.id = 'mapcontainer'; 
     mapcanvas.style.height = '550px'; 
     mapcanvas.style.width = '960px'; 

     document.querySelector('article').appendChild(mapcanvas); 

     var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

     var options = { 
      zoom: 15, 
      center: coords, 
      mapTypeControl: false, 
      navigationControlOptions: { 
       style: google.maps.NavigationControlStyle.SMALL 
      }, 
      mapTypeId: google.maps.MapTypeId.ROADMAP 
     }; 
     var map = new google.maps.Map(document.getElementById("mapcontainer"), options); 

     var marker = new google.maps.Marker({ 
      position: coords, 
      map: map, 
      title: "Vasa lokacija" 
     }); 
    } 

    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(success); 
    } else { 
     error('Geo Location is not supported'); 
    } 
    var locations = [ 
     ['Banja Luka', 44.766666699999990000, 17.183333299999960000, 4], 
     ['Tuzla', 44.532841000000000000, 18.670499999999947000, 5], 
     ['Zenica', 44.203439200000000000, 17.907743200000027000, 3], 
     ['Sarajevo', 43.850000000000000000, 18.250000000000000000, 2], 
     ['Mostar', 43.333333300000000000, 17.799999999999954000, 1] 
    ]; 
    var infowindow = new google.maps.InfoWindow(); 

    var marker, i; 

    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 

     google.maps.event.addListener(marker, 'click', (function (marker, i) { 
      return function() { 
       infowindow.setContent(locations[i][0]); 
       infowindow.open(map, marker); 
      } 
     })(marker, i)); 
    } 
    } 

回答

0

与您的代码的主要问题是之前加载地图,因为它是你的功能success。尝试的侧面这个你正在策划标志:我有使用静态价值为中心,你可以改变它的每你的代码。

$(document).ready(function() { 
    success(position); 
}); 

var position = { // suppose this is your position 
    coords: { 
     latitude: 44.666666699999990000, 
     longitude: 17.183333299999960000 
    } 
}; 

var map; 
var marker, i; 

var locations = [ 
    ['Banja Luka', 44.766666699999990000, 17.183333299999960000, 4], 
    ['Tuzla', 44.532841000000000000, 18.670499999999947000, 5], 
    ['Zenica', 44.203439200000000000, 17.907743200000027000, 3], 
    ['Sarajevo', 43.850000000000000000, 18.250000000000000000, 2], 
    ['Mostar', 43.333333300000000000, 17.799999999999954000, 1] 
]; 

function success(position) { 
    var mapcanvas = document.createElement('div'); 
    mapcanvas.id = 'mapcontainer'; 
    mapcanvas.style.height = '550px'; 
    mapcanvas.style.width = '960px'; 
    document.getElementById('article').appendChild(mapcanvas); 

    var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

    var options = { 
     zoom: 8, 
     center: coords, 
     mapTypeControl: false, 
     navigationControlOptions: { 
      style: google.maps.NavigationControlStyle.SMALL 
     }, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("mapcontainer"), options); 

    marker = new google.maps.Marker({ 
     position: coords, 
     map: map, 
     title: "Vasa lokacija" 
    }); 

    var infowindow = new google.maps.InfoWindow(); 

    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 
     google.maps.event.addListener(marker, 'click', function (marker, i) { 

      infowindow.setContent(locations[i][0]); 
      infowindow.open(map, marker); 

     }); 
    } 
} 
+0

但它不显示我目前的位置,显示其他标记,但我不能看到我的位置 – 2014-12-19 12:09:12

+0

我已通过你传递你的位置静态值。 – 2014-12-19 12:10:40

+0

我已添加您的位置也尝试now.pass位置成功(位置)。 – 2014-12-19 12:14:40

0

你的函数的主要问题是你的标记添加循环在成功函数之外,所以它永远不会被调用。您的代码最后还有一个额外的}。这里是一个完整的解决方案jsfiddle

var map; 

function success(position) { 

    var mapcanvas = document.createElement('div'); 
    mapcanvas.id = 'mapcontainer'; 
    mapcanvas.style.height = '550px'; 
    mapcanvas.style.width = '960px'; 

    document.querySelector('article').appendChild(mapcanvas); 

    var coords = new google.maps.LatLng(position.coords.latitude, position.coords.longitude); 

    var options = { 
     zoom: 15, 
     center: coords, 
     mapTypeControl: false, 
     navigationControlOptions: { 
      style: google.maps.NavigationControlStyle.SMALL 
     }, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }; 
    map = new google.maps.Map(document.getElementById("mapcontainer"), options); 

    var marker = new google.maps.Marker({ 
     position: coords, 
     map: map, 
     title: "Vasa lokacija" 
    }); 

    if (navigator.geolocation) { 
     navigator.geolocation.getCurrentPosition(success); 
    } else { 
     error('Geo Location is not supported'); 
    } 

    var locations = [ 
     ['Banja Luka', 44.766666699999990000, 17.183333299999960000, 4], 
     ['Tuzla', 44.532841000000000000, 18.670499999999947000, 5], 
     ['Zenica', 44.203439200000000000, 17.907743200000027000, 3], 
     ['Sarajevo', 43.850000000000000000, 18.250000000000000000, 2], 
     ['Mostar', 43.333333300000000000, 17.799999999999954000, 1] 
    ]; 

    var infowindow = new google.maps.InfoWindow(); 
    var marker, i; 

    for (i = 0; i < locations.length; i++) { 
     marker = new google.maps.Marker({ 
      position: new google.maps.LatLng(locations[i][1], locations[i][2]), 
      map: map 
     }); 

     google.maps.event.addListener(marker, 'click', (function (marker, i) { 
      return function() { 
       infowindow.setContent(locations[i][0]); 
       infowindow.open(map, marker); 
      } 
     })(marker, i)); 
    } 

} //success fn ENDS 

var position = { 
    coords: { 
     latitude: 44.766666699999990000, 
     longitude: 17.183333299999960000 
    } 
}; 

success(position); 
+0

使用;否则会出现语法错误。 – 2014-12-19 12:16:57

+0

刚添加它。谢谢。 – codeepic 2014-12-19 12:25:40

+0

它的作品,我只有中心地图到我的位置,但它很容易,我猜,谢谢codeepic :) – 2014-12-19 14:02:49