0

Google MapsJavascriptAPIを使用してカスタムマップを表示しようとしています。特に、マップの回転を可能にするために、いくつかのjqueryスクリプトを使用してそれを表示しようとしています。その部分が適切かどうかはわかりません。

標準のGoogleマップデータ(つまり、地球のタイル)を使用してコードを実行すると、正常に機能します。これが私のマップ作成コードです:

     // Standard google map
     var map = new google.maps.Map2(document.getElementById('map'));
     map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);

これは正常に機能します。ただし、カスタムマップを使用して、独自のタイル(マップの回転なしで、別のプロジェクトで既に達成済み)をフィードしようとすると、「未定義は関数ではありません」というメッセージが表示されます。標準のGoogleマップデータの代わりにカスタムタイルを使用するために追加されたコードは次のとおりです。

google.load("maps", "2.x");

var customTypeOptions = {
        getTileUrl: function (coord, zoom) {
            var normalizedCoord = getNormalizedCoord(coord, zoom);
            if (!normalizedCoord) {
                return null;
            }
            var bound = Math.pow(2, zoom);
            return "http://MYTILESURL/" + zoom + "/" + normalizedCoord.x + "/" + (bound - normalizedCoord.y - 1) + ".jpg";
        },
        tileSize: new google.maps.Size(256, 256),
        maxZoom: 3,
        minZoom: 0,
        radius: 1024,
        name: 'custom'
    };

var customMapType = new google.maps.ImageMapType(customTypeOptions);

そして、私のinitialize()関数で:

// Custom map
  var myLatlng = new google.maps.LatLng(0, 0);
  var myOptions = {
    center: myLatlng,
    zoom: 0,
    streetViewControl: false,
    mapTypeControlOptions: {
    mapTypeIds: ['custom']
    }
 };

 var map = new google.maps.Map(document.getElementById('map'), myOptions);
 map.mapTypes.set('custom', customMapType);
 map.setMapTypeId('custom');

私が得ているエラーは「46行目」を示しています。これは私のコードでは「tileSize:new google.maps.Size(256,256)」です。ただし、ここで報告されている46が、私が読んでいる46と同じであるかどうか、つまりファイルの46行目であるかどうかはわかりません。

この「未定義は関数ではありません」というエラーが発生する理由を誰かが知っていますか?

4

1 に答える 1

4

これはgoogle.maps.Size、GMapライブラリの読み込みが完了する前にアクセスされているために発生しています。初期化関数内を参照するものをすべて移動するだけgoogle.mapsです(または、呼び出しでコールバックオプションを使用google.loadして同じことを行います)。

于 2012-07-11T15:56:43.847 に答える