React-TypeScript: свойство position не существует для типа IntrinsicAttributes и IntrinsicClassAttributes <GoogleMapReact> - PullRequest
0 голосов
/ 08 мая 2020

Я изучаю React-typescript. Я использую карты Google React, чтобы показать свой район. Мне удалось отобразить карту. Когда я попытался использовать Маркер из response-google-map, чтобы указать мою область и расположить мою широту и долготу. Я получаю машинную ошибку: Property 'position' does not exist on type 'IntrinsicAttributes & IntrinsicClassAttributes<GoogleMapReact> & Readonly<Props> & Readonly<...>. Я правда не знаю, как это исправить.

import React, { useEffect, useState } from 'react';
import styled from 'styled-components';
import ErrorBoundary from 'components/errorBoundary';
import GoogleMapReact from 'google-map-react';
import Marker from 'google-map-react'

export interface ITestNewListProps {
  className?: string;
  position?: { lat: number; lng: number; };
}

const TestMaps = ({ className, position }: ITestNewListProps) => {

  const [state, setstate] = useState(
    {
      center: {
        lat: 60.1098678,
        lng: 24.7385084
      },
      zoom: 7
    }
  )

  return (
    <ErrorBoundary id="TestNewListErrorBoundary">
      <div className={`${className}`}>
        <div style={{ height: '100vh', width: '100%' }}>
          <GoogleMapReact
            bootstrapURLKeys={{ key: "*************************" }}
            defaultCenter={state.center}
            defaultZoom={state.zoom}
          >
            <Marker position={{ lat: 60.1098678, lng: 24.7385084 }} />//Geting error from here
          </GoogleMapReact>
        </div>
      </div>

    </ErrorBoundary>
  );
};

TestMaps.displayName = `test`;

export default styled(TestMaps)`
`;

1 Ответ

0 голосов
/ 08 мая 2020

Помните, что google-map-react позволяет отображать любой компонент React на карте.
Библиотека не экспортирует компонент Marker.
Однако, если вы хотите использовать маркеры Google Maps по умолчанию вы можете увидеть решение здесь .
Основываясь на примере из документации, вы сможете достичь чего-то подобного, определив свой собственный компонент Marker :

import React, { Component } from 'react';
import GoogleMapReact from 'google-map-react';

const Marker = ({ text }) => <div>{text}</div>;

class SimpleMap extends Component {
  static defaultProps = {
    center: {
      lat: 59.95,
      lng: 30.33
    },
    zoom: 11
  };

  render() {
    return (
      <div style={{ height: '100vh', width: '100%' }}>
        <GoogleMapReact
          bootstrapURLKeys={{ key: /* YOUR KEY HERE */ }}
          defaultCenter={this.props.center}
          defaultZoom={this.props.zoom}
        >
          <Marker
            lat={59.955413}
            lng={30.337844}
            text="My Marker"
          />
        </GoogleMapReact>
      </div>
    );
  }
}

export default SimpleMap;
...