1

以下のように、 Googleエンコーディングライブラリを使用して、パスポイント配列をエンコードおよびデコードしています。

エンコードするには:

var encodedPath = google.maps.geometry.encoding.encodePath(path);

デコードするには:

var decodedPath = google.maps.geometry.encoding.decodePath(encodedPath);

ただし、エンコーディング ライブラリが毎回一貫して読み込まれるわけではないことがわかりました。以下に印刷したように、ライブラリがマップのみをロードする場合があります。

showRouteFor(): google = [object Object]
showRouteFor(): google.maps = [object Object]
showRouteFor(): google.maps.geometry = undefined

以下の JS コードを使用します。

console.log("showRouteFor(): google = " + google);
if(google != null) {
    console.log("showRouteFor(): google.maps = " + google.maps);
    if(google.maps != null) {
        console.log("showRouteFor(): google.maps.geometry = " + JSON.stringify(google.maps.geometry));
        if(google.maps.geometry != null) {
            console.log("showRouteFor(): google.maps.geometry.encoding = " + JSON.stringify(google.maps.geometry.encoding));
        }
    }
}

それ以外の場合は、ライブラリが正常に読み込まれるため、それを使用してパスをデコードできます。

その理由は何ですか?お時間をいただきありがとうございます。

4

2 に答える 2

5

必ずURLでライブラリをロードしてください。

于 2012-11-13T14:09:22.120 に答える
1

google.maps.geometryジオメトリライブラリの一部です。コードで使用する場合は、Google Maps JavaScript API をロードするときにライブラリとして指定する必要があります。次に例を示します。

<script src="https://maps.googleapis.com/maps/api/js?libraries=places, geometry &key= apikey " async defer></script>

ややこしいのは、Google Maps JavaScript API の他の部分が内部でジオメトリ ライブラリを使用していることです。これにより、ライブラリを指定しなくても機能しますが、ジオメトリを使用する DirectionsRenderer などの他の機能をたまたま実行した場合に限ります。

于 2018-02-22T21:17:57.650 に答える