【问题标题】:Google Maps React - Making my markers clickableGoogle Maps React - 使我的标记可点击
【发布时间】:2019-01-31 15:57:11
【问题描述】:

所以我有点迷路了,我尝试了几个代码。我设法实现了标记,但是我认为我做错了事情以使它们真正可点击并显示一个信息窗口。

【问题讨论】:

  • 你能在这里分享codesandbox吗?解决问题会更容易。我会推荐使用 react-google-maps 它的社区很强大。
  • 让我为你制作一个有效的密码箱
  • @SakhiMansoor 谢谢!!

标签: javascript reactjs recompose google-maps-react


【解决方案1】:

Marker 默认是不可点击的,除了传递 onClick 处理函数,你还需要传递 clickable 属性。

您可以查看文档中的所有 Marker 属性:https://tomchentw.github.io/react-google-maps/#marker

【讨论】:

  • 您好,感谢您的帮助!我仍然不知道该怎么做。地图上的其他所有内容都是可点击的,但我的标记不可点击..
【解决方案2】:

您混合了react-google-mapsgoogle-maps-react。这是您的案例的工作示例: 请在 url 中添加您的 APIkey。

App.js

import React from "react";
import ReactDOM from "react-dom";

const { compose, withProps, withStateHandlers } = require("recompose");
const {
  withScriptjs,
  withGoogleMap,
  GoogleMap,
  Marker
} = require("react-google-maps");
const { InfoBox } = require("react-google-maps/lib/components/addons/InfoBox");


const App = compose(
  withProps({
    googleMapURL: "https://maps.googleapis.com/maps/api/js?key=**YOUR_API_KEY**&v=3.exp&libraries=geometry,drawing,places",
    loadingElement: <div style={{ height: `100%` }} />,
    containerElement: <div style={{ height: `400px` }} />,
    mapElement: <div style={{ height: `100%` }} />,
    center: { lat: 25.03, lng: 121.6 },
  }),
  withStateHandlers(() => ({
    isOpen: false,
  }), {
      onToggleOpen: ({ isOpen }) => () => ({
        isOpen: !isOpen,
      })
    }),
  withScriptjs,
  withGoogleMap
)(props =>
  <GoogleMap
    defaultZoom={5}
    defaultCenter={props.center}
  >

    <Marker
      position={{ lat: 22.6273, lng: 120.3014 }}
      onClick={props.onToggleOpen}
    >
      {props.isOpen && <InfoBox
        onCloseClick={props.onToggleOpen}
        options={{ closeBoxURL: ``, enableEventPropagation: true }}
      >
        <div style={{ backgroundColor: `yellow`, opacity: 0.75, padding: `12px` }}>
          <div style={{ fontSize: `16px`, fontColor: `#08233B` }}>
            no search place
          </div>
        </div>
      </InfoBox>}
    </Marker>
  </GoogleMap>
);
export default App;

react-google-maps 是基于 recomose 的智能组件,但您也可以将其设为类基础组件。

这是有效的代码框(暂时上线):https://codesandbox.io/s/2wwjmx673r 不要忘记添加您的 API 密钥。 请随时提出任何问题。

【讨论】:

  • 哇,你太棒了!难怪我在混合这两个大声笑后遇到了麻烦。现在,如果我实现您的代码,我的 Maps.js 将完全没用。编辑:当我单击它时,我仍然必须让标记改变颜色,并在那里实现一个带有 FourSquare 链接或其他东西的信息窗口......我应该这样做在您的代码中或为 Foursquare 制作另一个 .js 文件?
  • 很高兴为您提供帮助。
  • 等等,我刚刚注意到代码不允许我添加更多标记?
  • 如何添加更多?如果我尝试添加任何 标签,我会立即收到错误消息
  • 你好。所以一切都很顺利。我不得不从头开始重新做我的整个事情,因为我很难理解一切背后的逻辑,但非常感谢!不管怎样,我再次需要你的帮助。这是我的沙箱:codesandbox.io/s/0338vv69zv 由于某种原因,我的标记在单击时不会改变颜色。我也在试图弄清楚如何再次在那里实现一个信息框。您知道点击时如何在信息窗口内实现 FourSquare 窗口吗?
猜你喜欢
  • 1970-01-01
  • 2012-12-22
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
  • 2017-10-30
  • 2013-04-17
  • 1970-01-01
相关资源
最近更新 更多