无法读取未定义的属性(读取地图)
2022-01-12
4447
我想用 Google 的
DinstanceMatrixService
测量多个点之间的距离,但出现以下错误:
我多次使用了
google.maps...
,但出现
google
未定义的错误。我在网上搜索并发现,如果我在
google.maps...
前面输入
window
它应该可以工作,但是它不工作
function calculate_furthest_point() {
var origin1 = new window.google.maps.LatLng(46.754516, 23.596608);
var origin2 = new window.google.maps.LatLng(46.753906, 23.582223);
var destinationA = new window.google.maps.LatLng(46.751362, 23.594867);
var destinationB = new window.google.maps.LatLng(46.754986, 23.592378);
var service = new window.google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin1, origin2],
destinations: [destinationA, destinationB],
travelMode: "DRIVING",
transitOptions: TransitOptions,
drivingOptions: DrivingOptions,
unitSystem: UnitSystem,
avoidHighways: Boolean,
avoidTolls: Boolean,
},
callback
);
// callback()
function callback(response, status) {
if (status == "OK") {
var origins = response.originAddresses;
var destinations = response.destinationAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
var element = results[j];
var distance = element.distance.text;
var duration = element.duration.text;
var from = origins[i];
var to = destinations[j];
console.log(
"DISTANCE : " + distance + " FROM: " + from + " TO: " + to
);
}
}
} else console.log("ERROR");
}
}
和我的导入:
import logo from "./logo.svg";
import "./App.css";
import {
GoogleMap,
useLoadScript,
Marker,
InfoWindow,
} from "@react-google-maps/api";
import { useEffect } from "react";
import { initializeApp } from "firebase/app";
import {
getDatabase,
ref,
set,
onValue,
get,
child,
database,
DataSnapshot,
} from "firebase/database";
我正在使用
react-google-maps
。
3个回答
在使用 window.google 之前,您可能需要加载事件。
来自文档: 如果您需要访问地图对象,而不是 ref prop,则需要在组件上使用 onLoad 回调。
Mino mnz
2022-01-12
在某些时候,这个东西是
未定义
的,所以我的建议是把 qm(?) 放在
window.google
之后,
var service = new window.google?.maps.DistanceMatrixService();
Dobromir Kirov
2022-01-12
如果您在模块中将库用作导入,则将无法访问
window.google
。如果您在模块外调用函数
calculate_furthest_point
,则应在
<head>
标记中
添加
Google Map 脚本:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&callback=initMap">
</script>
否则,您应该导入并使用
@react-google-maps
包中的方法。
Georgy
2022-01-12