gpt4 book ai didi

javascript - Google Maps API data.setStyle 不在 map 上显示图标

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:18 30 4
gpt4 key购买 nike

我正在尝试使用 Google Maps JS API 创建一个小应用程序。我正在使用数据层从 GeoJSON 文件加载一堆点。该文件似乎正在正确加载, map 正在显示,但在 map.data.setstyle() 中设置的图标不会显示...

下面是我的 HTML、CSS 和 JS。我已经看了 2 天了,但我不知道出了什么问题。提前致谢!

HTML

<body>
<div id="map-canvas"></div>
</body>

CSS

html {
height: 100%
}

body {
height: 100%;
margin: 0;
padding: 0
}

#map-canvas {
height: 100%
}

JS

$(document).ready(function() {
var map;

function initialize() {
var mapOptions = {
center: new google.maps.LatLng(37.000, -120.000),
zoom: 7
};

map = new google.maps.Map(document.getElementById("map-canvas"),
mapOptions);

map.data.loadGeoJson('/map.json');
map.data.setStyle(function(feature) {
var theaterName = feature.getProperty('name');
return {
icon: "https://maps.gstatic.com/mapfiles/ms2/micons/marina.png",
visible: true,
clickable: true,
title: theaterName
};
});
}
google.maps.event.addDomListener(window, 'load', initialize);

});

JSON

{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"rentrak_id": "9183", "name": "Palm Theatre", "address": "817 Palm St, San Luis Obispo, CA"},
"geometry": {
"type": "Point",
"coordinates": [35.2815558, -120.6638196]
}
},
{
"type": "Feature",
"properties": {
"rentrak_id": "8961", "name": "King City 3", "address": "200 Broadway St, King City, CA"},
"geometry": {
"type": "Point",
"coordinates": [36.21372, -121.1261771]
}
},
{"type": "Feature", "properties": {
"rentrak_id": "5549", "name": "Van Buren 3 DI", "address": "3035 Van Buren Blvd, Riverside, CA"},
"geometry": {
"type": "Point",
"coordinates": [33.9113137, -117.4364228]
}},
{"type": "Feature", "properties": {
"rentrak_id": "990802", "name": "CGV Cinemas LA", "address": "621 S Western Ave, Los Angeles, CA"},
"geometry": {
"type": "Point",
"coordinates": [34.0626656, -118.3093961]
}},
{"type": "Feature", "properties": {
"rentrak_id": "5521", "name": "Rancho Niguel 7", "address": "25471 Rancho Niguel Rd, Laguna Niguel, CA"},
"geometry": {
"type": "Point",
"coordinates": [33.5560509, -117.68533]
}}]}

编辑::

因此,当我使用此文件时,我的脚本正在运行:http://earthquake.usgs.gov/earthquakes/feed/geojsonp/2.5/week

这让我觉得我的本地 json 文件有问题...但是当我逐步执行 javascript 时,我可以查看每个功能并检查属性和几何图形,它们似乎已正确加载到google.maps.feature 对象。所以,我仍然不知道为什么点数不会显示。

最佳答案

您将 bool 值用作字符串:'true' 而不是 true。所以调用 setStyle 应该是:

map.data.setStyle(function(feature) {
var theaterName = feature.getProperty('name');
return {
icon: "https://maps.gstatic.com/mapfiles/ms2/micons/marina.png",
visible: true,
clickable: true,
title: theaterName
};
});

更新:您的 json 文件已切换纬度/经度坐标。应该有

"coordinates": [-118.3093961, 34.0626656]

代替

"coordinates": [34.0626656, -118.3093961]

这就是我得到具有值 xy, -90 的对象的原因。

参见 GeoJSON specs : 元素的顺序必须遵循 x、y、z 顺序(投影坐标引用系统中坐标的东、北、高度,或地理坐标引用系统中坐标的经度、纬度、高度)。

因此,Google Maps API 使用 lat/lng,对于 GeoJSON 文件坐标,它应该是 lng/lat。

关于javascript - Google Maps API data.setStyle 不在 map 上显示图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22774115/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com