массив геолокации со статическими переменными - PullRequest
0 голосов
/ 23 сентября 2011

У меня есть два местоположения (маркера) для отображения на карте Google, одно из них - статическая переменная с именем 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 голосов
/ 23 сентября 2011

Вы заполняете 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...