具有静态变量的地理位置数组

时间:2011-09-22 20:36:19

标签: javascript google-maps geolocation

我有两个位置(标记)显示在谷歌地图上,一个是名为“companyLocale”的静态变量。第二个是基于当前位置“initialLocation”的动态变量。我试图将它们分组为一个名为“localArray”的数组,但我无法在数组中显示“companyLocale”变量。有人可以帮助我吗?

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: iPhone Geolocation</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">

var initialLocation;
var companyLocale = new google.maps.LatLng(33.206060, -117.111951);
var localArray = [initialLocation,companyLocale];

var noGeo = new google.maps.LatLng(40.69847032728747, -73.9514422416687);

function initialize() {
  var myOptions = {
    zoom: 14,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  // Safari supports the W3C Geolocation method
  if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);
      var placeMarker = new google.maps.Marker({
        position: initialLocation,
        map: map,
      });
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  } else {
    // Browser doesn't support Geolocation
    handleNoGeolocation();
  }

  function handleNoGeolocation() {
    initialLocation = noGeo;
    map.setCenter(initialLocation);
  }
}
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

1 个答案:

答案 0 :(得分:0)

在调用initialize函数之前,您将使用这两个值填充localArray。由于您已经将companyLocale定义为LatLng,因此可以使用,但是在执行的后期才开始创建initialLocation LatLng。

我想说最初从数组中删除initialLocation。然后在创建它之后,将其添加到数组中。我不知道数组项的顺序对你来说是否重要。如果不是,只需使用.push()将其附加到数组中。否则使用unshift()来预先添加它。

<script type="text/javascript">

var initialLocation;
var companyLocale = new google.maps.LatLng(33.206060, -117.111951);
var localArray = [companyLocale];

var noGeo = new google.maps.LatLng(40.69847032728747, -73.9514422416687);

function initialize() {
  var myOptions = {
    zoom: 14,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);

  // Safari supports the W3C Geolocation method
  if(navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);

      localArray.unshift(initialLocation);

      var placeMarker = new google.maps.Marker({
        position: initialLocation,
        map: map,
      });
      map.setCenter(initialLocation);
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  } else {
    // Browser doesn't support Geolocation
    handleNoGeolocation();
  }

  function handleNoGeolocation() {
    initialLocation = noGeo;
    localArray.unshift(initialLocation );
    map.setCenter(initialLocation);
  }
}
</script>