Вы заполняете 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>