0

地図上にマーカーを配置することはできましたが、GMap2 を使用しているため、地図上にマーカーを配置することはできません。住所から緯度経度を作成できるように、GMap2 を使用したいと考えています。

<script src="https://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=AIzaSyDrwris-0kRdY16oIQoGc_1qsdOgHbJrXo"
  type="text/javascript"></script>

<script type="text/javascript">
    var map = new GMap2(document.getElementById("chart"));
    map.setUIToDefault();

   navigator.geolocation.getCurrentPosition(function(position) {
   var pos = new google.maps.LatLng(position.coords.latitude,
                                         position.coords.longitude);
   map.setCenter(pos, 14);

   //until now it works fine, but when I add a marker it does nothing

 var marker = new GMarker({
    position: new GLatLng(52.15664,5.40567),
    map: map,
    title: 'NAME'
 });

4

1 に答える 1

0

ここにはいくつかの問題があります。

まず、マッピングAPIの2つのバージョンが含まれていますが、そのうちの1つは何らかの理由でパラメーターをエスケープしています。これは、他の場所からコピーされたことが原因である可能性があります。V2 APIが必要な場合は、それだけを含める必要があります。APIは来年Googleによって廃止される予定であることに注意してください。

また、マーカーのインスタンス化コードが正しくありません。最初のパラメータとしてlatlng位置を渡し、次にオブジェクトリテラル形式で2番目のパラメータとしてオプションを渡す必要があります。例:

var marker = new GMarker(new GLatLng(<coord>, <coord>), { title:"My Title" });

最後に、マーカー自体をマップに追加していません。addOverlayこれにメソッドを使用します。

これが有効なソリューションです。[マーカーの追加]ボタンを押して、ランダムな位置にマーカーをマップに追加します。

<html>
<head><title>Map Test</title>
<script src="http://maps.google.com/maps?file=api&v=2&sensor=true" type="text/javascript"></script>

<script type="text/javascript"> 
var map;
function initmap() {
    map = new GMap2(document.getElementById("chart")); 
    map.setUIToDefault(); 

    navigator.geolocation.getCurrentPosition(function(position) { 
        var pos = new google.maps.LatLng(position.coords.latitude, 
                                         position.coords.longitude); 
        map.setCenter(pos, 14); 
    });
}

function AddMarker() {
    var bounds = map.getBounds();
    var southWest = bounds.getSouthWest();
    var northEast = bounds.getNorthEast();
    var lngSpan = northEast.lng() - southWest.lng();
    var latSpan = northEast.lat() - southWest.lat();
    var point = new GLatLng(southWest.lat() + latSpan * Math.random(), 
                            southWest.lng() + lngSpan * Math.random());
    map.addOverlay(new GMarker(point, { title:"My Marker" }));
}

</script>
</head>
<body onload="initmap()">
    <div style="width:300px;height:300px" id="chart"></div>
    <input type="button" onclick="AddMarker();" value="Add Marker"></input>
</body>
</html>

上記はジオロケーションが機能することを前提としていることに注意してください。実際のアプリケーションでは、次のAPIドキュメントに示されているようにエラーをテストする必要があります。

https://developers.google.com/maps/articles/geolocation

于 2012-09-11T13:36:54.897 に答える