思い切ってmap.jsの方で処理するようにしてみました
map.jsの58行目付近に
map.js
//現在地取得
function geoLocate(){
// 位置情報取得のオプション。高精度にする
var position_options = {
enableHightAccuracy: true
};
// 現在地取得(変わる毎に更新)
navigator.geolocation.getCurrentPosition(success, fatal);
//位置情報取得成功時
function success(pos){
document.getElementById('lat').value = pos.coords.latitude;
document.getElementById('lng').value = pos.coords.longitude;
ShowGMap();
var myLatLng = new google.maps.LatLng(pos.coords.latitude, pos.coords.longitude);
// ユーザのマーカーアイコンを変更
var markerImage = new google.maps.MarkerImage(
// 画像の場所
"サイトURL/images/startposition.png",
// マーカーのサイズ
new google.maps.Size(64, 64),
// 画像の基準位置
new google.maps.Point(0, 0),
// Anchorポイント
new google.maps.Point(32, 32)
);
// 現在地のマーカー表示
var marker = new google.maps.Marker({
map:gn_map,
draggable:false,
animation: google.maps.Animation.DROP,
position: myLatLng,
title: "現在地"
});
return myLatLng;
}
// 位置情報取得失敗時
function fatal(error){
var message = "";
switch(error.code){
// 位置情報が取得出来ない場合
case error.POSITION_UNAVAILABLE:
message = "位置情報の取得ができませんでした。";
break;
// Geolocationの使用が許可されない場合
case error.PERMISSION_DENIED:
message = "位置情報取得の使用許可がされませんでした。";
break;
// タイムアウトした場合
case error.PERMISSION_DENIED_TIMEOUT:
message = "位置情報取得中にタイムアウトしました。";
break;
}
window.alert(message);
return null;
}
}
そしてShowGMap()の中にgeoLocate();と書けばOKです
197行目付近になります(追加してるので少しずれてるかも
map.js
function ShowGMap() {
// display many markers.
// mashmap(gn_map);
geoLocate();//位置情報取得 平成26年1月16日
if(document.getElementById('mt').value){
gn_mt = document.getElementById('mt').value;
}else{
gn_mt = 'ROADMAP';
}
gn_iz=parseInt(document.getElementById('z').value);
gn_ilt=document.getElementById('lat').value;
gn_ilg=document.getElementById('lng').value;
if(!InitializeGmap())return;
if(gn_drkm){
var k = gn_url+'/kml.php?'+gn_ulop;
var g = new google.maps.KmlLayer(k,
{ suppressInfoWindows: true,
map: gn_map});
g.setMap(gn_map);
}
searchSales();
// addListener
google.maps.event.addListener(gn_map, 'idle', function() {
var p = gn_map.getCenter();
DrawLatLngTxt(p);
var newZoomLevel = gn_map.getZoom();
document.getElementById('z').value =newZoomLevel;
document.getElementById('sz').innerHTML =newZoomLevel;
});
// addListener
google.maps.event.addListener(gn_map, 'maptypeid_changed', function() {
document.getElementById('mt').value = gn_map.getMapTypeId().toUpperCase();
});
// addListener
google.maps.event.addListener(gn_map, 'click', function(){
gn_infowindow.close(gn_map);
});
// setcenter
var c = new google.maps.LatLng(document.getElementById('lat').value,document.getElementById('lng').value);
gn_map.setCenter(c);
gn_map.setZoom(parseInt(document.getElementById('z').value));
if(gn_ep)MapClick();
}
これを実装すると
開いた時にブラウザから位置情報を取得し、初期位置になった場所に現在地とタイトルをつけたマーカーを設置します